/*
 * EntrepriseBean.java
 *
 * Created on 13 avril 2007, 19:32
 *
 * To change this template, choose Tools | Template Manager
 * and open the template in the editor.
 */
//testkk


package Session;

import Entity.Banque;
import Entity.Entreprise;
import Entity.Etat;
import Entity.Industrie;
import Entity.Landien;
import Entity.Emprunt;
import Entity.Machine;
import Entity.ReportingEntreprise;
import java.util.Vector;
import javax.ejb.Stateless;
import javax.persistence.EntityManager;
import javax.persistence.PersistenceContext;

/**
 *
 * @author amo
 */
@Stateless(mappedName="EntrepriseRemote2")
public class EntrepriseBean implements Session.EntrepriseRemote
{
    @PersistenceContext
    private EntityManager em;
    
    public EntrepriseBean()
    {
    }
   
    public Vector<Entreprise> readAll()
    {
        Vector<Entreprise> ve = (Vector) em.createQuery("SELECT e FROM Entreprise e").getResultList();
        return ve;
    }
    
    public Vector<Industrie> readAllIndustrie()
    {
        Vector<Industrie> ve = (Vector<Industrie>) em.createQuery("SELECT e FROM Industrie e ").getResultList();
        return ve;
    }
    public Industrie readIndustrie(int id)
    {
        return em.find(Industrie.class, id);
    }
    public Etat readEtat(int id)
    {
        return em.find(Etat.class, id);
    }
    public Banque readBanque(int id)
    {
        return em.find(Banque.class, id);
    }
    public Vector<Banque> readAllBanque()
    {
        Vector<Banque> ve = (Vector) em.createQuery("SELECT e FROM Banque e ").getResultList();
        return ve;
    }
    public Vector<Etat> readAllEtat()
    {
        Vector<Etat> ve = (Vector) em.createQuery("SELECT e FROM Etat e ").getResultList();
        return ve;
    }
    
    
    public void persist(Object object)
    {
        // TODO:
        em.persist(object);
    }
 /*   public  void modif(int id, Industrie i)
    {
        Industrie o = em.find(Industrie.class, id);
        o.setCapital_Entreprise(i.getCapital_Entreprise());
        o.setNb_Marchandise(i.getNb_Marchandise());
        o.setNb_offre_emploi(i.getNb_offre_emploi());
        o.setNom_Entreprise(i.getNom_Entreprise());
        o.setPrix_Vente_Marchandise(i.getPrix_Vente_Marchandise());
        o.setRemuneration_Entreprise(i.getRemuneration_Entreprise());
        o.setRendement_Entreprise(i.getRendement_Entreprise());
        o.setSesLandiens(i.getSesLandiens());
        o.setType_Entreprise(i.getType_Entreprise());
        o.setProduction(i.getProduction());
        o.setVentes(i.getVentes());
        ;
    }*/
    public  void modifChamps(int id, Industrie i)
    {
        Industrie o = em.find(Industrie.class, id);
        o.setCapital_Entreprise(i.getCapital_Entreprise());
        o.setNb_Marchandise(i.getNb_Marchandise());
        o.setNb_offre_emploi(i.getNb_offre_emploi());
        o.setNom_Entreprise(i.getNom_Entreprise());
        o.setPrix_Vente_Marchandise(i.getPrix_Vente_Marchandise());
        o.setRemuneration_Entreprise(i.getRemuneration_Entreprise());
        o.setRendement_Entreprise(i.getRendement_Entreprise());
        o.setProduction(i.getProduction());
        o.setBenefice_Entreprise(i.getBenefice_Entreprise());
        o.setType_Entreprise(i.getType_Entreprise()); 
        o.setNb_Licenciement(i.getNb_Licenciement());
        o.setNbAchatMachine(i.getNbAchatMachine());
        o.setSesMachines(i.getSesMachines());
    }
    public  void modifChamps(int id, Etat i)
    {
        Etat o = em.find(Etat.class, id);
        o.setCapital_Entreprise(i.getCapital_Entreprise());
        // o.setNb_Marchandise(i.getNb_Marchandise());
        // o.setNb_offre_emploi(i.getNb_offre_emploi());
        o.setNom_Entreprise(i.getNom_Entreprise());
        //o.setPrix_Vente_Marchandise(i.getPrix_Vente_Marchandise());
        o.setRemuneration_Entreprise(i.getRemuneration_Entreprise());
        //o.setRendement_Entreprise(i.getRendement_Entreprise());
        //o.setType_Entreprise(i.getType_Entreprise());
        o.setBenefice_Entreprise(i.getBenefice_Entreprise());
    }
    public  void modifChamps(int id, Banque i)
    {
        Banque o = em.find(Banque.class, id);
        o.setCapital_Entreprise(i.getCapital_Entreprise());
        //o.setNb_Marchandise(i.getNb_Marchandise());
        //o.setNb_offre_emploi(i.getNb_offre_emploi());
        o.setNom_Entreprise(i.getNom_Entreprise());
        //o.setPrix_Vente_Marchandise(i.getPrix_Vente_Marchandise());
        o.setRemuneration_Entreprise(i.getRemuneration_Entreprise());
        // o.setRendement_Entreprise(i.getRendement_Entreprise());
        //o.setType_Entreprise(i.getType_Entreprise());
        o.setBenefice_Entreprise(i.getBenefice_Entreprise());
        o.setNb_offre_emploi(i.getNb_offre_emploi());
        o.setNb_Licenciement(i.getNb_Licenciement());
    }
    public  void modifChamps(int id, Entreprise e)
    {
        if (e instanceof Industrie)
        {
            Industrie i = (Industrie)e;
            modifChamps(id,i);
        }
        if (e instanceof Banque)
        {
            Banque b = (Banque)e;
            modifChamps(id,b);
        }
        if (e instanceof Etat)
        {
            Etat et = (Etat)e;
            modifChamps(id,et);
        }
        
    }
    public void ajouterLandien(int id,Landien l,String classe)
    {
        //On recherche l'industrie id
        
        if (classe.equals("Entity.Industrie"))
        {
            Industrie e = em.find(Industrie.class, id);
            e.setNb_offre_emploi(e.getNb_offre_emploi()-1);
            e.addLandien(l);
            
            Etat et = readAllEtat().get(0);
            Etat tmp = em.find(Etat.class, et.getId());
            if (et.getSesChomeurs().size()>0)
            {
                //tmp.removeChomeur(et.getSesChomeurs().size()-1);
                tmp.getSesChomeurs().remove(em.find(Landien.class, l.getIdLandien()));
            }
            Landien l2 = em.find(Landien.class, l.getIdLandien());
            
            l2.setEnt(e);
            
            em.persist(e);
            em.persist(l2);
            em.persist(tmp);
            
        }
        if (classe.equals("Entity.Banque"))
        {
            Banque e = em.find(Banque.class, id);
            e.setNb_offre_emploi(e.getNb_offre_emploi()-1);
            Etat et = readAllEtat().get(0);
            Etat tmp = em.find(Etat.class, et.getId());
            if (et.getSesChomeurs().size()>0)
            {
                //tmp.removeChomeur(et.getSesChomeurs().size()-1);
                tmp.getSesChomeurs().remove(em.find(Landien.class, l.getIdLandien()));
            }
            e.addLandien(l);
            em.persist(e);
            
        }
        if (classe.equals("Entity.Etat"))
        {
            Etat e = em.find(Etat.class, id);
            
            e.addLandien(l);
            
            Landien l2 = em.find(Landien.class, l.getIdLandien());
            l2.setEnt(e);
            em.persist(l2);
            em.persist(e);
        }
    }
    public void ajouterChomeur(int id,Landien l,String classe)
    {
        //On recherche l'industrie id
        
        
        if (classe.equals("Entity.Etat"))
        {
            Etat e = em.find(Etat.class, id);
            e.addChomeur(l);
            em.persist(e);
        }
        
        
    }
    
    public void supprimerChomeur(int id)
    {
        //On recherche l'entreprise id
        //ne marche pas encore
       /* Etat o = em.find(Etat.class, id);
        o.removeChomeur(o.getSesLandiens().size()-1);
        em.persist(o);*/
        
    }
    
    
    public void supprimerLandien(int id)
    {
        //On recherche l'entreprise id
        //ne marche pas encore
        Industrie o = em.find(Industrie.class, id);
        o.removeLandien(o.getSesLandiens().size()-1);
        em.persist(o);
        
    }
    
    public void ajouterHistorique(int id,ReportingEntreprise h)
    {
        //On recherche l'entreprise id
        
        Entreprise o = em.find(Entreprise.class, id);
        o.addHistorique(h);
        em.persist(o);
    }
        public void modifChampsHistorique(int id,ReportingEntreprise h)
    {
        //On recherche l'entreprise id
        ReportingEntreprise o = em.find(ReportingEntreprise.class, id);
        o.setMontantImpot(h.getMontantImpot());
        o.setBenefice(h.getBenefice());
        o.setNbEmbauche(h.getNbEmbauche());
        o.setNbLicenciement(h.getNbLicenciement());
        em.persist(o);
    }
    
    public void ajouterOffreEmprunt(int id,Emprunt e)
    {
        //On recherche l'entreprise id
        Banque o = em.find(Banque.class, id);
        o.addOffreEmprunt(e);
        em.persist(o);
    }
    
    public void modiferEmprunt(int id, Emprunt e)
    {
        //On recherche la Banque id
        Banque o = em.find(Banque.class, id);
        //On recherche l'emprunt idemprunt
        Emprunt emp = new Emprunt();
        for(Emprunt emprunt : o.getSesOffresEmprunts())
        {
            if(emprunt.getIdEnprunt()==e.getIdEnprunt())
            {
                emp = (Emprunt) emprunt;
            }
        }
        emp.setDureeMaxEmprunt(e.getDureeMaxEmprunt());
        emp.setDureeEnprunt(e.getDureeEnprunt());
        emp.setDateEmprunt(e.getDateEmprunt());
        emp.setMontant(e.getMontant());
        emp.setMontantMax(e.getMontantMax());
        emp.setTaux(e.getTaux());
        emp.setCapitalRestant(e.getCapitalRestant());
        emp.setEtatEmprunt(e.getEtatEmprunt());
        emp.setIdEntreprise(e.getIdEntreprise());
        emp.setSaBanque(e.getSaBanque());
        System.out.println("Modification de l'emprunt reussie");
        
    }
    
    public void ajouterMachine(int id,Machine m)
    {
        //On recherche l'industrie id
        Industrie o = em.find(Industrie.class, id);
        o.addMachine(m);
        em.persist(o);
    }
    
    public void supprimerMachine(int id, int idMachine)
    {
        //On recherche l'industrie id
        Industrie o = em.find(Industrie.class, id);
        o.removeMachine(idMachine);
        em.persist(o);
    }
    
    public void modifierMachine(int idIndustrie, Machine m)
    {
        //On recherche l'entreprise idEntreprise
        Industrie o = em.find(Industrie.class, idIndustrie);
        //On recherche la machine idMachine
        Machine mach=null;
        for(Machine machine : o.getSesMachines())
        {
            if(machine.getIdMachine()==m.getIdMachine())
            {
                mach = (Machine) machine;
            }
        }
        if(mach!=null)
        {
            mach.setAge(m.getAge());
            System.out.println("Modification de la machine reussie");
        }
    }
    
}
